// 定义一个 http类，用于创建http对象的模板
class HTTP {
  // 默认 constructor
  constructor() {
    try {
      const axios = require("axios");
      this.axiosInstance = axios.create({
        timeout: 600000
      });
    } catch (error) {
      console.log(error);
    }
    // 添加请求拦截器
    this.axiosInstance.interceptors.request.use(function (config) {
      // 在发送请求之前做些什么
      console.log('requestTime', new Date())
      return config;
    }, function (error) {
      // 对请求错误做些什么
      return Promise.reject(error);
    });

    /* 响应拦截器 */
    this.axiosInstance.interceptors.response.use(
      response => {
        console.log('responseTime', new Date())
        if (response.data && response.data.retCode === "200") {
          return typeof response.data.data !== "undefined" &&
            response.data.data !== null
            ? response.data.data
            : response.data;
        }
        return Promise.reject(response.data);
      },
      error => Promise.reject(error.data)
    );
  }

  /* post方法 */
  post = async ({ url, data, headers }) => {
    return this.axiosInstance
      .post(url, data, { headers })
      .then(res => res)
      .catch(err => err);
  };

  /* get方法 */
  async get({ url, params, headers }) {
    return this.axiosInstance
      .get(url, { params, headers })
      .then(res => res)
      .catch(err => err);
  }
}

export default new HTTP();
